package com.explorati.design_pattern.hybrid.observermediator;

/**
 * 产品类，构造函数带两个参数，第一个是产品管理器，只有产品管理器的isCreateProduct()返回true，才能创建产品
 * 并将canChnage设为true，而canChange的值又决定是否能够修改产品，只有它的值为true才能修改产品
 * 
 * @author explorati
 *
 */
public class Product implements Cloneable {

	// 产品名称
	private String name;
	// 属性是否可以变更
	private boolean canChange = false;

	// 产生一个新的产品
	public Product(ProductManager manager, String name) {
		// 允许建立产品
		if (manager.isCreateProduct()) {
			canChange = true;
			this.name = name;
		}
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		if (canChange) {
			this.name = name;
		}
	}

	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}

}
